<template>
  <template v-for="(item) in props.menuData">
    <!-- 没有子菜单情况 -->
    <el-menu-item
      v-if="!item.children || !item.children.length"
      :index="`${props.index}-${item.meta.id}`"
      :key="`${props.index}-${item.meta.id}`"
      @click="handleClick(item, `${props.index}-${item.meta.id}`)"
    >
      <el-icon size="18">
        <component :is="item.meta.icon" />
      </el-icon>
      <span>{{ item.meta.name }}</span>
    </el-menu-item>
    <!-- 有子菜单情况 -->
    <el-sub-menu
      v-else
      :index="`${props.index}-${item.meta.id}`"
      :key="`${props.index}-${item.meta.id}`"
    >
      <template #title>
        <el-icon size="20">
          <component :is="item.meta.icon" />
        </el-icon>
        <span>{{ item.meta.name }}</span>
      </template>
      <tree-menu :index="`${props.index}-${item.meta.id}`" :menuData="item.children" />
    </el-sub-menu>
  </template>
</template>

<script setup>
import { useRouter } from "vue-router";
import { useStore } from 'vuex'

const store = useStore();

const props = defineProps(["menuData", "index"]);
const router = useRouter()

/**
 * 点击菜单
 */
const handleClick = (item, active) => {
  store.commit('addMenu', item.meta)
  store.commit('updateMenuActive', active)
  router.push(item.meta.path)
}
</script>